what are the limitations of procedural programming